通过配置SSH密钥认证,您可以让VS Code在连接到远程服务器时无需每次都输入密码,从而实现无缝的开发体验。以下是详细的步骤:
核心概念:SSH密钥对
SSH密钥认证的核心在于使用一对密钥:一个私钥和一个公钥。
- 私钥:存储在您的本地计算机上,必须妥善保管,不能泄露。
- 公钥:可以安全地共享,并需要放置在您希望连接的远程服务器上。
当您尝试连接时,VS Code会使用您的私钥来证明您的身份,远程服务器则会使用预先存放在那里的公钥进行验证。
操作步骤
第一步:在本地计算机上生成SSH密钥对
打开您本地计算机的终端(在Windows上可以是PowerShell、CMD或Git Bash;在macOS或Linux上是Terminal)。
运行以下命令来生成一个新的SSH密钥对:
bashssh-keygen -t ed25519 -C "your_email@example.com"
-t ed25519
:指定使用Ed25519算法生成密钥,这是一种现代且安全的算法。如果您的系统不支持,可以使用-t rsa -b 4096
来替代。-C "your_email@example.com"
:这是一个可选的注释,通常用来标识密钥,您可以替换成您的邮箱地址。
在生成过程中,系统会询问您几个问题:
- "Enter a file in which to save the key":直接按回车键接受默认路径即可。默认情况下,密钥会保存在用户主目录下的
.ssh
文件夹中(例如,Windows下的C:\Users\YourUsername\.ssh
,macOS和Linux下的~/.ssh
)。 - "Enter passphrase (empty for no passphrase)":直接按回车键设置一个空密码。这样在连接时就不需要输入额外的密码。如果您为了更高的安全性设置了密码,则需要配置ssh-agent来避免每次都输入。
执行完毕后,您会在
.ssh
文件夹下看到两个文件:id_ed25519
(私钥)和id_ed25519.pub
(公钥)。- "Enter a file in which to save the key":直接按回车键接受默认路径即可。默认情况下,密钥会保存在用户主目录下的
第二步:将公钥复制到远程服务器
现在,您需要将本地生成的公钥 (id_ed25519.pub
) 的内容添加到远程服务器的 ~/.ssh/authorized_keys
文件中。
方法一:使用 ssh-copy-id
命令(推荐,最简单)
如果您本地是macOS或Linux系统,或者Windows上安装了Git Bash,可以使用这个便捷的命令:
ssh-copy-id user@hostname
- 将
user
替换为您在远程服务器上的用户名。 - 将
hostname
替换为远程服务器的IP地址或域名。
这个命令会自动将您的公钥追加到服务器的 authorized_keys
文件中,并设置正确的文件权限。
方法二:手动复制公钥
如果无法使用 ssh-copy-id
,可以按照以下步骤手动操作:
在本地计算机上,复制公钥文件的内容。您可以使用以下命令在终端显示公钥内容,然后手动复制:
- Windows (CMD/PowerShell):bash
type $env:USERPROFILE\.ssh\id_ed25519.pub
- macOS/Linux/Git Bash:bash
cat ~/.ssh/id_ed25519.pub
- Windows (CMD/PowerShell):
通过密码登录到您的远程服务器。
在远程服务器上,执行以下命令,将您复制的公钥内容粘贴进去:
bashmkdir -p ~/.ssh && chmod 700 ~/.ssh echo "粘贴您复制的公钥内容" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
mkdir -p ~/.ssh
确保.ssh
目录存在。chmod 700 ~/.ssh
和chmod 600 ~/.ssh/authorized_keys
是为了设置正确的目录和文件权限,这对于SSH认证至关重要。
第三步:配置VS Code的SSH
确保您已经在VS Code中安装了 Remote - SSH 插件。
按下
F1
或Ctrl+Shift+P
打开命令面板,输入并选择 "Remote-SSH: Open Configuration File..."。选择默认的配置文件路径(通常是
~/.ssh/config
或C:\Users\YourUsername\.ssh\config
)并打开它。在配置文件中为您的服务器添加或修改一个条目,如下所示:
Host my-server # 您为服务器起的别名 HostName your_server_ip_or_domain # 服务器的IP地址或域名 User your_username # 您的用户名 IdentityFile ~/.ssh/id_ed25519 # 您本地私钥的路径
Host
:一个易于记忆的别名,之后您可以在VS Code中直接选择这个别名进行连接。HostName
:远程服务器的实际地址。User
:登录远程服务器所用的用户名。IdentityFile
:指定用于认证的私钥文件路径。请确保路径与您在第一步中生成的私钥路径一致。
保存并关闭配置文件。
第四步:连接到远程服务器
- 点击VS Code左下角的绿色远程连接图标。
- 在弹出的菜单中选择 "Connect to Host..."。
- 您应该能看到您在配置文件中设置的主机别名(例如
my-server
)。 - 选择该主机进行连接。
现在,VS Code应该会直接使用您的SSH密钥进行认证,而不会再提示您输入密码。 您已经成功实现了免密登录!